/**
 * 
 */
package com.pe.adexus.portal3g.componente;

import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;

import com.pe.adexus.portal3g.bean.ClienteBean;
import com.pe.adexus.portal3g.bean.CuentaBean;
import com.pe.adexus.portal3g.bean.SaldoClienteBean;
import com.pe.adexus.portal3g.utiles.Utiles;

/**
 * @author lsalvador.ext
 *
 */
public class ObjetoData {
	
	private LeerXml leerXml = new LeerXml();
	private Utiles objUtil = new Utiles(); 
	
	public static ClienteBean obtenerClienteBean(HashMap hashMap,int flagAct){
		ClienteBean bean = new ClienteBean();
		String nombres = (String)hashMap.get("first_name"); 
		if( nombres.trim().toUpperCase().equals("NULL") || nombres.trim().toUpperCase().equals("UNKNOWN") ){
			nombres="";
		}
		bean.setNombres(nombres);
		String apellidos = (String)hashMap.get("last_name");
		if(apellidos.trim().toUpperCase().equals("NULL") || apellidos.trim().toUpperCase().equals("UNKNOWN")){apellidos="";	}
		bean.setApellidos(apellidos);
		String dni = (String)hashMap.get("customer_id");
		String tipoDocumento = "";
		if(dni.trim().toUpperCase().equals("NULL")){
			dni="";
		}else{
			int index=dni.indexOf("_");
			if(index!=-1){
				tipoDocumento = dni.substring(index+1,dni.length());
				dni= dni.substring(0,index);
			}
		}
		bean.setDni(dni);
		bean.setTipoDocumento(tipoDocumento);
		bean.setCustomerNum((String)hashMap.get("customer_number"));//id
		String direccion="";
		if(flagAct==0){//principal
			direccion = (String)hashMap.get("street")+" "+(String)hashMap.get("streetno")+
						" "+(String)hashMap.get("city")+" "+(String)hashMap.get("state")+" "+(String)hashMap.get("country");
			//+" "+(String)hashMap.get("city")+" "+(String)hashMap.get("street")+" "+(String)hashMap.get("streetno");	
		}else{//actualizacion
			direccion = (String)hashMap.get("street");
		}
		bean.setDireccion(direccion);
		bean.setTelefono((String)hashMap.get("home_phone"));
		String celular = (String)hashMap.get("cell_phone");
		if(celular.trim().toUpperCase().equals("NULL")){celular="";}
		bean.setCelular(celular);
		String fechaNacimiento = (String)hashMap.get("birth_date");
		//System.out.println("fecha="+fechaNacimiento);
		if(!fechaNacimiento.trim().equals("")){
			//"yyyy-mm-dd"
			String dd=fechaNacimiento.substring(8,10);
			String mm=fechaNacimiento.substring(5,7);
			String yy=fechaNacimiento.substring(0,4);
			fechaNacimiento =  dd+"/"+mm+"/"+yy;
		}
		bean.setFechaNacimiento(fechaNacimiento);
		String email = (String)hashMap.get("email");
		if(email.trim().toUpperCase().equals("NULL")){email="";}
		bean.setEmail(email);
		
		return bean;
		
	}

	public static String obtenertelefono(HashMap hashMap){
		String telefono = (String)hashMap.get("phone_numbers");
		String ceparador = Constantes.CEPARADOR_TELEFONOS;
		int indexInicio = 0;
		int indexFinal = telefono.indexOf(ceparador);
		if(indexFinal==-1){
		}else{telefono = telefono.substring(indexInicio, indexFinal);}
		
		return telefono;
	}
	
	public static String valor(String valor){
		String text = valor.trim();
		int index = text.indexOf(Constantes.CEPARADOR_ESPACIO);
		String cadena="";
		while(index!=0){
			cadena = cadena + text.substring(0, index)+Constantes.CEPARADOR_RAYA;
			text = text.substring(index+1,text.length());
			index = text.indexOf(Constantes.CEPARADOR_ESPACIO);
		}
		
		
		return cadena;
	}
	
	public static double obtenerSaldo(ArrayList lista, double costo){
	//public double obtenerSaldo(ArrayList lista, double costo){
		//String saldo="";
		CuentaBean cuentaBean = null;
		SaldoClienteBean bean = null;
		double valor=0;
		double valor_total = 0;
		double saldo_moneda = 0 ;	
		double saldo_data = 0 ;

		final LeerXml leerXml = new LeerXml();
		
		try{	
			
			for(int i=1;i<lista.size() ;i++)
			{				
				//String dato_xml = leerXml.leerXmlTipoDato(i);
				
				cuentaBean = (CuentaBean)lista.get(i);
				//VALOR DE PRUEBA
				//cuentaBean.setValor("1800.00");				
				//
				String tipo_dato = cuentaBean.getValorTipo();
				String hora = "";
				String min = "";
				double valorCuenta ;
				double valorCuentaHora = 0 ;
				
				if (tipo_dato.equals("time")){
				//if (tipo_dato == dato_xml){
					//System.out.println("tipo_dato  "+tipo_dato);
					
					valorCuenta = Double.parseDouble(cuentaBean.getValor());//minutos  ---//soles				
					valorCuentaHora = (valorCuenta)/60; //a horas (valorCuenta)/(costo);
					BigDecimal bd = new BigDecimal(valorCuentaHora);
					BigDecimal bdRedondeado = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
					valorCuentaHora = bdRedondeado.doubleValue();
					
					bean = new SaldoClienteBean(valorCuentaHora);
					hora = bean.getSaldoHora()+ "";
					min = bean.getSaldoMinuto()+"";
					
					cuentaBean.setValor(new Double(valorCuentaHora).toString());
					cuentaBean.setFormatoTiempoH(hora);	
					cuentaBean.setFormatoTiempoM(min);
					cuentaBean.setSimbolo("HH:MM:SS");
				} 
				else if(tipo_dato.equals("amount")) 
				{
					//System.out.println("cuentaBean.getValor() :  "+cuentaBean.getValor());
					
					
					if (cuentaBean.getValor()!="" )
					{
						saldo_moneda = Double.parseDouble(cuentaBean.getValor());
						cuentaBean.setValor(Utiles.aMonedaSoles(saldo_moneda));    				    				    
					    cuentaBean.setSimbolo("Soles");
					}
					else 
					{
						cuentaBean.setValor("");    				    				    
					    cuentaBean.setSimbolo("");						
					}
					
				    /*WPL201005*/
				    //saldo_moneda = Double.parseDouble(cuentaBean.getValor());
				    //cuentaBean.setValor(Utiles.aMonedaSoles(saldo_moneda));	    			        				    				    
				    //cuentaBean.setSimbolo("Soles");
				    /*WPL201005*/
				    
				} else if(tipo_dato.equals("data")) {	
					//saldo_data = Double.parseDouble(cuentaBean.getValor());
					BigDecimal bd = new BigDecimal(cuentaBean.getValor());
					
					double kbytes = bd.longValue() / 1024; //1000
					double mbytes = kbytes / 1024; //0
									    
				    cuentaBean.setValor(Utiles.aMoneda(mbytes));
				    cuentaBean.setSimbolo("MB");
					//cuentaBean.setFormatoTiempoH(hora);	
				}
				else if(tipo_dato.equals("integer")) 
				{	
					//saldo_data = Double.parseDouble(cuentaBean.getValor());
					
				    cuentaBean.setValor(cuentaBean.getValor());
					//cuentaBean.setFormatoTiempoH(hora);	
				}
				
				valor = valor + valorCuentaHora;
				
				//String tipoCuenta = cuentaBean.getCodigoTipo();					
				//System.out.println("tipoCuenta  "+tipoCuenta);
				/*if  (tipoCuenta.equals("3")){
					hora = bean.getSaldoHora()+"";
				}else {
					hora = bean.getSaldoHora()+ "";
					min = bean.getSaldoMinuto()+"";
				}*/
				//String hora = bean.getSaldoHora()+" H con "+bean.getSaldoMinuto()+" Min";
				
			}
			valor_total = (valor * costo) + saldo_moneda;
			
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
			
		}
		return valor_total;
	}
	
	public static double obtenerSaldoDeRecargas(ArrayList lista){
		double valor=0;
		CuentaBean cuentaBean =null;
		try{
			String saldo=null;
			for(int i=0;i<lista.size();i++)
			{
				
				cuentaBean = (CuentaBean)lista.get(i);
				
				
				// verificamos que trae codigo tipo
			//	if(cuentaBean.getCodigoTipo()!=null && !cuentaBean.getCodigoTipo().trim().equals(""))
			//	{
				
				if(cuentaBean.getCodigoTipo()!=null )
				 {	
					if(  cuentaBean.getCodigoTipo().equals("1") || cuentaBean.getCodigoTipo().equals("4") )
							{
								saldo=cuentaBean.getValor();
				 				
								while(saldo.indexOf(",")>-1){
				 				 saldo=saldo.substring(0,saldo.indexOf(","))+saldo.substring(saldo.indexOf(",")+1,saldo.length());
						 				 
				 				}
				 				 
				 				
												 				
				 				//saldo=saldo.replace(".", ",");
								
								// Si el string "saldo" tiene un contenido
								if (saldo.trim().length() > 0)
								{
									// lo convierto en un valor double
								  valor += Double.parseDouble(saldo);
								
								}
								// si el string "saldo"NO tiene un contenido
								// retornamos "-100.00"
								else
								{
										valor=-100.00;
								}
							}						
				} // fin si es diferente de null
				
			}// fin del for
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		return valor;
	}
	
	public static int retornarSaldoCuentaHoras(ArrayList lista, String cuenta){
		CuentaBean cuentaBean = null;		
		int hora = 0;
		//System.out.println("metodo : retornarSaldoCuentaHoras");
		try{
			for(int i=1;i<lista.size() ;i++){
				cuentaBean = (CuentaBean)lista.get(i);
				String tipoCuenta = cuentaBean.getCodigoTipo();
				if(cuenta.equals(tipoCuenta)){
					double valorCuenta = Double.parseDouble(cuentaBean.getValor());					
					hora = (int)valorCuenta;					
					break;
				}								
			}
		}catch(Exception ex){
			ex.printStackTrace();			
		}
		return hora;
	} 

	public static int retornarSaldoCuentaMinutos(ArrayList lista, String cuenta){
		CuentaBean cuentaBean = null;
		SaldoClienteBean bean = null;
		int min = 0;
		int hora = 0;
		//System.out.println("metodo : retornarSaldoCuentaMinutos");
		try{
			for(int i=1;i<lista.size() ;i++){
				cuentaBean = (CuentaBean)lista.get(i);
				String tipoCuenta = cuentaBean.getCodigoTipo();
				if(cuenta.equals(tipoCuenta)){
					double valorCuenta = Double.parseDouble(cuentaBean.getValor());
					hora = (int)valorCuenta;
					double minutos = valorCuenta - hora;
					minutos = minutos * 60;					 
					BigDecimal bd = new BigDecimal(minutos);
					BigDecimal bdRedondeado = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
					minutos = bdRedondeado.doubleValue();					
					min = (int)minutos;				
					//System.out.println("--->min  "+min);
				}
			}
		}catch(Exception ex){
			ex.printStackTrace();			
		}
		return min;
	} 
	public double obtenerMonto(ArrayList lista,String tipo,int cantHoras){
		//CuentaBean cuentaBean = null;
		SaldoClienteBean bean = null;
		double monto = 0;				
		try{
			double costoHora = leerXml.leerXmlCostoHora();
			
			for(int i=1;i<lista.size();i++){
				CuentaBean cuentaBean = (CuentaBean)lista.get(i);
				String tipoCuenta = cuentaBean.getCodigoTipo();
				if(tipo.equals(tipoCuenta)){
					
					//Sacando el costo					 
					monto = cantHoras * costoHora;
					BigDecimal bd = new BigDecimal(monto);
					BigDecimal bdRedondeado = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
					monto = bdRedondeado.doubleValue();									
					System.out.println("Monto obj Data :"+monto);
					break;
				}
			}
		}catch(Exception ex){
			ex.printStackTrace();			
		}
		return monto;
	}	

	public static String encode(String textoURL) throws UnsupportedEncodingException{
		String urlEncode = "";
		//String stringToEncode = "";
		// Metodo que encodifica un string a una direccion url valida
	    urlEncode = URLEncoder.encode(textoURL, "UTF-8");
		//System.out.println(URLEncoder.encode(textoURL, "UTF-8"));
		return urlEncode;
	}
	
	public static String formatFechaSymsoft(String fecha) {//fecha = dd/MM/yyyy
		String format = "";
		if(fecha.trim().equals("")){
			format = "00-00-00 00:00:00";//yy-MM-dd 00:00:00
		}else{
			String dd = fecha.substring(0,2);
			String mm = fecha.substring(3,5);
			String yy = fecha.substring(6,10);
			format = yy+"-"+mm+"-"+dd+" 00:00:00";
		}
		
		return format;//yyy-MM-dd 00:00:00
	}
}
